# 云胡的编程周报第 001 期

时间:2023/8/14 - 2023/8/20

# 一、点滴记录

  1. 数据插入到表的时候一定要判断数据重复问题。

  2. 对接口的方法进行实现或者对父类方法进行重写时都要加上 @Override来在编译时检查参数或者函数名有没有写错。

  3. 实体类的日期类型不要用 Date,用 LocalDateTimeDate 是可变类,线程不安全,LocalDateTime线程安全。

    可以在实体类的日期类型上加上 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 来自定义日期的格式。

    一个完整的实体类日期数据:

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    
    1
    2
  4. 使用 validationdto 参数进行校验,常用注解有:

    • @NotNull 被约束的元素不能为 null,常用来约束 IntegerLong 类型。

    • @NotEmpty 验证字符串、集合、字典或数组是否为 null 或者空,常用来约束 StringList类型。

    • @Min(0)约束最小值

    • @Max(99)约束最大值

    • @Size约束长度。

      @Size(min = 15, max = 18, message = "身份证必须在 15 位到 18 位之间")
      @ApiModelProperty(value = "身份证号")
      private String identityCard;
      
      1
      2
      3
    • @Valid校验嵌套对象。

      这边需要对 ProductInfo 的数据进行校验必须加上 @Valid,如果不加,只是在 ProductInfo 实体类中对数据进行校验,那么检验不会生效。

      @Valid
      @ApiModelProperty(value = "商品信息对象")
      List<ProductInfo> productInfoList;
      
      1
      2
      3
      @Data
      public class ProductInfo {
         @Min(0)
         @NotNull(message = "商品 id 不能为空")
         @ApiModelProperty(value = "商品 id ")
         private Long productId;
      
         @Min(0)
         @Max(100)
         @NotNull(message = "商品佣金比例不能为空")
         @ApiModelProperty(value = "商品佣金比例")
         private Integer productCommissionRate;
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
  5. Linux Shell:

    • 复制:ctrl + insert
    • 粘贴:shift + insert
  6. Vim 的复制粘贴

    • Vim 默认模式:yy 复制光标所在的那一行,p 进行粘贴。
    • Vim 可视模式:在普通模式下按入 v,进入可视模式。然后多选行,y 复制多行,p 进行粘贴。
  7. 本地与 Linux 服务器的文件传输:

    安装 lrzsz

    • 安装命令:sudo apt-get install lrzsz

    使用:

    • 本地上传文件到服务器:rz,然后选择本地文件即可。
    • 服务器文件下载到本地:sz filePathfilePath是服务器的文件路径。
  8. 使用 Mybatis PlusQueryWrapper查询比较时,用 lambda(),这时候用 .eq() 的第一个参数就可以用实体 getColumnName 的方式,避免硬编码。

    • 不规范的查询
    @Override
    public SysUserEntity getSysUserEntity(String username) {
       QueryWrapper<SysUserEntity> queryWrapper = new QueryWrapper<>();
       queryWrapper.eq("username", username); // "username" 硬编码,不规范,而且容易写错
       return sysUserMapper.selectOne(queryWrapper);
    }
    
    1
    2
    3
    4
    5
    6
    • 规范的查询,推荐
    @Override
    public SysUserEntity getSysUserEntity(String username) {
       QueryWrapper<SysUserEntity> queryWrapper = new QueryWrapper<>();
       
       queryWrapper.lambda()
          .eq(SysUserEntity::getUsername, username);
       
       return sysUserMapper.selectOne(queryWrapper);
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
  9. 服务器的 nginx默认路径在 /etc/nginx,配置文件在这个路径下的 nginx.conf,在进行前后端分离项目时,如果不是放在默认 80端口,需要在这里配置自定义端口与 vue 生成的 dist 文件的关联。

  10. Linux 可以用 unzip 解压 zip 文件。

    安装 unzip

    • 安装命令:sudo apt install unzip

    使用 unzip:

    • 解压到当前目录: unzip xxx.zip
    • 解压到指定目录:unzip -o xxx.zip -d tmp/tmp/ 是一个举例的路径,可以换成其他路径。

# 二、后记

编程世界博大精深,每天都能感受到技术的薄弱,感觉自己浑身全是破绽,因此打算多记录,用自己的话写下来,毕竟老话说得好,好记性不如烂笔头。

这是编程周报的第一期,今年开始决定把主要精力放在工作和学习技术上,希望自己能坚持下来。

加油。